$.fn.evtslideshow.transition.horizontalSlide = {
	
	styles : {
		wrapperCSS : {
			position : 'relative',
			overflow : 'hidden'
		},
		innerCSS : {
			width : '100000px',
			position : 'absolute',
			top : 0,
			left: 0
		},
		slideCSS : {
			float: 'left'
		}
	},
	
	setUp : function( opts, callback )
	{
		opts.$wrapper.width( opts.$slides.eq(0).outerWidth() );
		opts.$wrapper.height( opts.$slides.eq(0).outerHeight() );

		if ( opts.atEnd === 'loop' )
		{
			opts.$slides.hide();
			opts.$slides.eq(opts.currentSlide).show();
		}
		else
		{
			var leftpos = -1 * opts.$slides.eq( opts.currentSlide ).position().left;
			opts.$inner.css({'left': leftpos });
		}
		callback();
	},
	
	action : function( opts, slideNum, callback )
	{
		var $sl		= opts.$slides,
			$from	= $sl.eq(opts.currentSlide),
			$to		= $sl.eq(slideNum),
			$in		= opts.$inner,
			slideWidth	= opts.$slides.eq(0).outerWidth();

		if ( opts.atEnd === 'loop' )
		{
			if ( opts.dir === 'prev' )
			{
				$from.before($to);
				$in.css({'left': slideWidth*-1 });
				$to.show();
				$in.animate( { "left" : 0 }, opts.speed, function(){
					$from.hide();
					callback();
				});
			}
			else
			{
				$from.after($to);
				$to.show();
				$in.animate( { "left" : slideWidth*-1 }, opts.speed, function(){
					$from.hide();
					$in.css({'left': 0});
					callback();
				});
			}
		}
		else
		{
			var leftpos = -1 * opts.$slides.eq( slideNum ).position().left;
			opts.$inner.animate( { "left" : leftpos }, opts.speed, callback );
		}
	}
};